/**  
 * @Title: SessionHelper.java
 * @Package: com.itic.appbase.framework.utils
 * @Description: 当前用户Session获取类，于SessionValidInterceptor中调用
 * @author: idong
 * @date: 2015年6月11日 下午1:21:10
 * @version: V1.0  
 */

package com.itic.appbase.framework.utils;

import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;

import com.itic.appbase.framework.plugins.logger.Log;

/**
 * <p>
 * Company: itic
 * </p>
 * 本地保存session中指定的值,用于service层调用.
 * 
 * @author: idong
 * @date: 2015年6月11日 下午1:21:10
 * @version: V1.0
 */
public class UserSessionHelper {
    // 本地副本
    static ThreadLocal<Map<String, String>> userSession = new ThreadLocal<Map<String, String>>();
    private static final Logger LOGGER = Log.get(UserSessionHelper.class);

    private UserSessionHelper() {

    }

    /**
     * 获取map中的指定属性
     * 
     * @param attribute
     * @return
     */
    public static String get(String attribute) {
        Map<String, String> map = userSession.get();
        try {
            return map.get(attribute);
        } catch (NullPointerException e) {
            Log.warn(LOGGER, e, "用户Session属性{}未获取", attribute);
        }
        return null;
    }

    /**
     * 设定map中的指定属性
     * 
     * @param attribute
     * @param value
     */
    public static void set(String attribute, String value) {
        Map<String, String> map = userSession.get();
        if (map == null) {
            map = new HashMap<String, String>();
            userSession.set(map);
        }
        map.put(attribute, value);
    }
}
